#include <tcl.h>

int Tcl_AppInit(Tcl_Interp *interp);

// cg3d
int cg3d_init (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int cg3d_FlushCMDs (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int cg3d_AddCLB (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int cg3d_SetCLBLoc (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int cg3d_AddEdge (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int cg3d_Display(ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int cg3d_hilitCLB(ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int cg3d_drawLine(ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int cg3d_updateLoc(ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int cg3d_add_netseg(ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);

// basic utilities
int base_AddCell (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int base_AddEdge (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int base_SetCellLoc (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int base_ReportStat (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int base_printNetwork (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int base_printcell (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int base_randomly_place (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int base_init_placement_env (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int base_init_tdm_env (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);

// placement0: force-directed placement engine
int fd_place (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
int fd_compress (ClientData clientData,
                Tcl_Interp *interp,
                int argc, const char *argv[]);
